//****************************************************************
//Funciones
//*****************************************
var digitos="0123456789"; //d?gitos num?ricos
var DiasDelMes = new Array(12); 
DiasDelMes[1]=31;
DiasDelMes[2]=29; //esto debe checkearse mediante programa
DiasDelMes[3]=31;
DiasDelMes[4]=30;
DiasDelMes[5]=31;
DiasDelMes[6]=30;
DiasDelMes[7]=31;
DiasDelMes[8]=31;
DiasDelMes[9]=30;
DiasDelMes[10]=31;
DiasDelMes[11]=30;
DiasDelMes[12]=31;

//******************************************************************
//Cuerpo de las funciones
//******************************************************************

function IsDate(s) 
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripci?n : Verifica si el  valor s (cadena) es una fecha valida.
*/

var dia;
var mes;
var anio;

anio = parseInt(s.substr(6,4),10);
mes = parseInt(s.substr(3,2),10);
dia = parseInt(s.substr(0,2),10);

if (s.length == 10)
	//Si es un a?o valido
	if (anio > 1900)
		//Si es un mes valido
		if((mes > 0)&&(mes < 13))
			//Si es un dia valido
			if((dia > 0 )&&(dia < 32 ))
			    //Si es mes de febrero
				if(mes == 2)
					//Si es mes de febrero con 29 dias
					//Febrero tiene 29 dias en cualquier a?o que sea multiplo de 4,
					//excepto los a?os centenarios ademas de divisibles por 400
					if((anio % 4 == 0)&&((!(anio % 100 == 0))||(anio % 400 == 0)))
						//Si esta en el rango[1-29]
						if((dia > 0)&&(dia < 30))
							return true;
						else
							return false;
					else
						//Si esta en el rango[1-28]
						if((dia > 0)&&(dia < 29))
							return true;
						else
							return false;
				else
					//Rango de numero de dias permitido para los demas meses
					
					if((dia > 0) && (dia<=DiasDelMes[mes]))
						return true;
					else
						return false;
			else
				return false;
		else
			return false;
	else
		return false;
else
	return false;
}

function Upper()
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Convierte a mayusculas las teclas pulsadas.
*/
	{
	if(String.fromCharCode(window.event.keyCode)>="a"&&String.fromCharCode(window.event.keyCode)<="z")
		{
		window.event.keyCode = window.event.keyCode - 32;
		}
	}

function InLineValidTime()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Valida en linea el ingreso de caracteres en campos tipo Hora.
*/

if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if ( !((Tecla>="0"&&Tecla<="9")||(Tecla==":")) )
		{
		window.event.keyCode = 0;
		}
	}
}

function IsTime(cTime)
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Verifica si el parametro ingresado es una Hora Valida (formato 24 horas).
*/

var horas;
var minutos;

	if (cTime.length!=5)
		return false;
	else
		{
		horas = parseInt(cTime.substr(0,2));
		minutos = parseInt(cTime.substr(3,2));
		if (!(horas<24&&minutos<60&&cTime.substr(2,1)==":"))
			return false;
		else
			return true;
		}
}

function SoloNumeros()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso unicamente de Numeros.
*/

if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if ( !(Tecla>="0"&&Tecla<="9") )
		{
		window.event.keyCode = 0;
		}
	}
}

function SoloLetras()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso de unicamente de Letras y Espacios.
*/

if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if (!((Tecla<="Z"&&Tecla>="A")||(Tecla<="z"&&Tecla>="a")||(Tecla==" ")))
		{
		window.event.keyCode = 0;
		}
	}	
}

function SinArroba()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso de todas las teclas menos arroba.
*/
if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if (Tecla=="@")
		{
		window.event.keyCode = 0;
		}
	}	
}

function LetrasRestringidas()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	No Permite el ingreso de las comillas dobles(34), punto y coma(59), comillas simples(39).
*/
if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = parseInt(window.event.keyCode);
	if (Tecla==34 || Tecla==59 || Tecla==39)
		{
		window.event.keyCode = 0;
		}
	}	
}

function IsNumeric(ch){
	/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Devuelve true si ch es digito
	*/	
	return  (ch>="0" && ch<="9") == true;
}

function IsBS(ch){
	/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Devuelve true si ch es letra
	*/	
	return ( ch==' ' ) == true;

}

function IsLetter(ch){
	/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Devuelve true si ch es letra
	*/	
	return ( (  ('a'<=ch) && (ch<='z') ) || (('A'<=ch) && (ch<='Z') ) ||
		 (ch=='?') || (ch=='?') ) == true;
}

function NumerosLetras()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso de unicamente de numeros y letras
*/

	if(window.event.keyCode!=13)
	{
		var Tecla;
		Tecla = String.fromCharCode(window.event.keyCode);
		if ( ! ( IsNumeric( Tecla ) || IsLetter( Tecla ) )  )
		{
			window.event.keyCode = 0;
		}
	}	
}

function LetrasEspacios()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso de unicamente letras y espacios
*/

if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if ( (!IsLetter( Tecla )) && (!IsBS( Tecla )) )
		{
		window.event.keyCode = 0;
		}
	}	
}

function NumerosLetrasEspacios()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso de unicamente de numeros, letras y espacios
*/

if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if ( (!IsNumeric( Tecla )) && (!IsLetter( Tecla )) && (!IsBS( Tecla )) )
		{
		window.event.keyCode = 0;
		}
	}	
}

function NumerosEspacios()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso de unicamente de numeros y espacios
*/

if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if ( (!IsNumeric( Tecla )) && (!IsBS( Tecla )) )
		{
		window.event.keyCode = 0;
		}
	}	
}

function NumerosPunto(){
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Permite el ingreso de unicamente de numeros y puntos (para IP)
*/
	if(window.event.keyCode!=13){
		var Tecla;
		Tecla = String.fromCharCode(window.event.keyCode);
		if ( !IsNumeric( Tecla ) && (Tecla != ".") )
		{
			window.event.keyCode = 0;
			return false;
		}
		else
		    return true;
	}	
}

function Mostrar(divName)
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Muestra la division de nombre <divName>.
*/
	var newDiv;
	newDiv = eval('document.all.'+ divName);
	newDiv.style.visibility = 'visible';
}

function Ocultar(divName)
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Oculta la division de nombre <divName>.
*/
	var newDiv;
	newDiv = eval('document.all.'+ divName);
	newDiv.style.visibility = 'hidden';
}

function FechaMayor(valor1,valor2)
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	verifica si la primera fecha (valor1) es mayor a la segunda (valor2).
				Devuelve un valor booleano <true o false>.
*/
{
	var fecha1;
	var fecha2;

	fecha1=valor1.substr(6,4) + valor1.substr(3,2) + valor1.substr(0,2);
	fecha2=valor2.substr(6,4) + valor2.substr(3,2) + valor2.substr(0,2);

	return fecha1>fecha2;
}

function FechaMayorIgual(valor1,valor2)
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	verifica si la primera fecha (valor1) es mayor a la segunda (valor2).
				Devuelve un valor booleano <true o false>.
*/
{
	var fecha1;
	var fecha2;

	fecha1=valor1.substr(6,4) + valor1.substr(3,2) + valor1.substr(0,2);
	fecha2=valor2.substr(6,4) + valor2.substr(3,2) + valor2.substr(0,2);

	return fecha1>=fecha2;
}
function HoraMayor(valor1,valor2)
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion :   Evalua la hora en formato de 24 horas
*/
{
	var hora1;
	var hora2;

	hora1=valor1.substr(0,2) + valor1.substr(3,2);
	hora2=valor2.substr(0,2) + valor2.substr(3,2);

	return hora1>hora2;
}

function keyEnter() 
{
/*Autor		: Ruben Bermudez Varas 01/04/2006
Descripcion 	: Verifica si la tecla presionada es Enter
*/
  var key;
	key= window.event.keyCode;
	if (key == 13)
		window.event.keyCode = 0;

	return 	key == 13;
}

function keyEnterSiguiente(objName) 
{
/*Autor		: Ruben Bermudez Varas 01/04/2006
Descripcion 	: Verifica si la tecla presionada es Enter para saltar le foco al siguiente objeto
*/
  var key;
	key= window.event.keyCode;
	if (key == 13)
        {
	    var newobj;
	    newobj = eval('document.all.'+ objName);
	    newobj.focus();
	}
}

/*************************************************************
Autor		: Ruben Bermudez Varas 01/04/2006
Descripci?n	: Conjunto de funciones para hecer trim de cadenas
*/
function LCHTrim(vString, ch)
{
var j;
	for(j=0; j<vString.length && (vString.charAt(j) == ch); j++);
	
	return vString.substr(j) ;
}

function RCHTrim(vString, ch)
{
var j;
	for(j=vString.length; j>0 && (vString.charAt(j-1) == ch); j--);
	
	return vString.substring(0, j);
}

function RTrim(vString){
	return RCHTrim(vString, ' ');
}

function LTrim(vString){
	return LCHTrim(vString, ' ');
}

function Trim(vString){
	return LTrim(RTrim(String(vString)));
}
/*FIN Conjunto de funciones para hecer trim de cadenas
*/

function Reloj()
/*
Autor		: Claudio Zarate 07/03/2001
Descripci?n	: Devuelve hora actual en formato HH:MM:SS, "Window.setInterval("Hora()",1000)"
*/
{	
	var HoraActual = new Date();
	var HoraString;
	var Hora="";
	var Minutos="";
	var Segundos="";
	Hora+=HoraActual.getHours();
	if (Hora.length==1)
		{
		Hora="0" + Hora;
		}
	Hora+=":";
	Minutos+=HoraActual.getMinutes();
	if (Minutos.length==1)
		{
		Minutos="0" + Minutos;
		}
	Minutos+=":";
	Segundos+=HoraActual.getSeconds();
	if (Segundos.length==1)
		{
		Segundos="0" + Segundos;
		}
	HoraString= Hora+Minutos+Segundos;
	HoraActual=null;

	return HoraString;
}

function keyValidaFecha()
{
/*
Autor		:	Ruben Bermudez Varas 01/04/2006
Descripcion	:	Valida en linea el ingreso de caracteres en campos tipo fecha.
*/

if(window.event.keyCode!=13)
	{
	var Tecla;
	Tecla = String.fromCharCode(window.event.keyCode);
	if ( !((Tecla>="0"&&Tecla<="9")||(Tecla=="/")) )
		{
		window.event.keyCode = 0;
		}
	}	
}

function keyFormatoFecha(ob)
/*
Autor		: Ruben Bermudez Varas 01/04/2006
Descripcion	: provee una mascara en linea a los textos tipo Fecha
*/

{
	var x=window.event.keyCode;
	keyValidaFecha();
	if (x==13) 
	{
		window.event.keyCode = 0;
		window.event.returnValue=false;
		return;
	}
	var fecha
	if (window.event.keyCode!=8){
		if(ob.value.length==1){
			fecha=ob.value
			ob.value=fecha + String.fromCharCode(window.event.keyCode) +"/"
			window.event.returnValue=0;
		}
		if(ob.value.length==4){
			fecha=ob.value
			ob.value=fecha + String.fromCharCode(window.event.keyCode) +"/"
			window.event.returnValue=0;
		}
	}
	if (x==47){
		if(ob.value.length<2){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
		if(ob.value.length>2 && ob.value.length<5){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
		if(ob.value.length>5){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
	}
}

function keyFormatoAnioMes(ob)
/*
Autor		: Ruben Bermudez Varas 01/04/2006
Descripcion	: provee una mascara en linea a los textos tipo mes / a?o
*/
{
	var x=window.event.keyCode;
	keyValidaFecha();
	if (x==13) 
	{
		window.event.keyCode = 0;
		window.event.returnValue=false;
		return;
	}
	var fecha
	if (window.event.keyCode!=8){
		if(ob.value.length==1){
			fecha=ob.value
			ob.value=fecha + String.fromCharCode(window.event.keyCode) +"/"
			window.event.returnValue=0;
		}
		if(ob.value.length==7){
			fecha=ob.value;
			ob.value=fecha;
			window.event.returnValue=0;
		}
	}
	if (x==47){
		if(ob.value.length<2){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
		if(ob.value.length>2){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
	}
}

function keyFormatoAnio(ob)
/*
Autor		: Ruben Bermudez Varas 01/04/2006
Descripcion	: provee una mascara en linea a los textos tipo a?o
*/

{
	var x=window.event.keyCode;
	SoloNumeros();
	if (x==13) 
	{
		window.event.keyCode = 0;
		window.event.returnValue=false;
		return;
	}
	var anio
	if (window.event.keyCode!=8){
		if(ob.value.length==4){
			anio=ob.value;
			ob.value=anio;
			window.event.returnValue=0;
		}
	}
	if (x==47){
		if(ob.value.length<5){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
	}
}

function keyValidaHora(ob)
{
/*Fecha para proveer una mascara a los campos tipo Hora
Autor		: Ruben Bermudez Varas 01/04/2006
*/

	var x=window.event.keyCode;
	InLineValidTime();
	if (x==13) 
	{
		window.event.keyCode = 0;
		window.event.returnValue=false;
		return;
	}
	var fecha
	if (window.event.keyCode!=8){
		if(ob.value.length==1){
			fecha=ob.value
			ob.value=fecha + String.fromCharCode(window.event.keyCode) +":"
			window.event.returnValue=0;
		}
	}
	if (x==47){
		if(ob.value.length<2){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
		if(ob.value.length>2 && ob.value.length<5){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
		if(ob.value.length>5){
			window.event.keyCode = 0;
			window.event.returnValue=false;
		}
	}
}

function TipoBrowser()
{
/*
Autor		: Ruben Bermudez Varas 01/04/2006
Descripcion	: Identifica el tipo de browser
*/
var Tipo="XX";
	if(navigator.appName=="Netscape" && navigator.appVersion>4)
	{
	Tipo="NS";
	}
	if(navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion>=4)
	{
	Tipo="IE";
	}
return Tipo;	
}

